<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">              
    
    <ui:composition template="templatePadrao.xhtml">
        
            <ui:define name="top">       
                <ui:include src="menu.xhtml" />
            </ui:define>             
        
      <ui:define name="content">
          
       <h:form id="formMessages">
           <p:growl id="messages" widgetVar="messages" showDetail="true" life="5000" sticky="false" autoUpdate="true" />  
       </h:form>                        
            
      <body onload="unidade.show()">  
          
          <h:form id="principal" prependId="false">
                                         
              <p:panelGrid columns="2" styleClass="usuarioGrid">
              
                    <p:outputLabel value="Unidade Corrente :"/>
                    <p:outputLabel value="#{GradeController.nomeUnidade}"/>
                    
              </p:panelGrid>
              
              <p:panelGrid columns="6" styleClass="usuarioGrid">
                    <p:outputLabel value="Filtros :"/>
                    <p:selectOneMenu label="Disciplina" id="selectFiltro" value="#{GradeController.filtroSelecionado}">
                    <p:ajax event="change" update=":principal :tabela:aulas"/>
                        <f:selectItem itemValue="0" itemLabel="Padrão"/>
                        <f:selectItem itemValue="1" itemLabel="Data"/>
                    </p:selectOneMenu>
                    <p:inputText size="11" maxlength="10" id="filtroDataIni" value="#{GradeController.dataIniFiltro}" title="Informe a data inicial a ser fitrada" onblur="validaDataIni(this)" onkeyup="mascaraData(this)" rendered="#{GradeController.exibeDatas}"/>
                    <p:outputLabel value="Até" rendered="#{GradeController.exibeDatas}" />
                    <p:inputText size="11" maxlength="10" id="filtroDataFim" value="#{GradeController.dataFimFiltro}" title="Informe a data final a ser fitrada" onblur="validaDataFim(this)" onkeyup="mascaraData(this)" rendered="#{GradeController.exibeDatas}"/>
                    <p:commandButton value="Atualizar" update=":tabela:aulas" action="#{GradeController.atualizaLista()}" rendered="#{GradeController.exibeDatas}" onclick="blockPrincipal.show()" oncomplete="blockPrincipal.hide()" />
              </p:panelGrid>
                            
              <p:fieldset legend="Aula">
                  
                  <p:panelGrid id="padrao" columns="2" style="width: 100%;" styleClass="usuarioGrid">
                                                 
                                <p:selectOneMenu style="width: 300px;" label="Unidade" id="selectUnidadeCorrente" value="#{GradeController.selectedUnidades}"> 
                                    <f:selectItems value="#{GradeController.carregarUnidade}" />                         
                                </p:selectOneMenu>
                      
                                <p:selectOneMenu style="width: 300px;" label="Turma" id="selectTurma" value="#{GradeController.selectedTurma}"> 
                                              <f:selectItems value="#{GradeController.carregarTurma}" />                         
                                </p:selectOneMenu>                      
                      
                      
                 </p:panelGrid>
                  
                  <p:panelGrid id="padrao2" columns="2" style="width: 100%;" styleClass="usuarioGrid">
                      
                      <p:selectOneMenu style="width: 300px;" label="Disciplina" id="selectDisicplina" value="#{GradeController.selectedDisciplina}"> 
                                <p:ajax event="change" update="selectProfessor"/>
                                    <f:selectItems value="#{GradeController.carregarSelectDisciplina}" />                         
                                </p:selectOneMenu> 
                      
                      <p:selectOneMenu style="width: 300px;" label="Professor" id="selectProfessor" value="#{GradeController.selectedProfessor}"> 
                                <p:ajax event="change" update="selectDisicplina"/>
                                    <f:selectItems value="#{GradeController.carregarSelectProfessor}" />                         
                      </p:selectOneMenu>                                        
                                    
                        <p:selectOneMenu style="width: 300px;" label="Sala de Aula" id="selectSala" value="#{GradeController.selectedSala}"> 
                                 <f:selectItems value="#{GradeController.carregarSelectSala}" />
                        </p:selectOneMenu>                                                    

                        <p:selectOneMenu style="width: 300px;" label="Buscar Material" id="selectMaterial" value="#{GradeController.selectedMaterial}"> 
                            <f:selectItem itemLabel="Buscar Material?" itemValue=""/>
                            <f:selectItem itemLabel="Sim" itemValue="sim"/>
                            <f:selectItem itemLabel="Não" itemValue="nao"/>
                        </p:selectOneMenu>                                                                     
                  
                 </p:panelGrid>                      
                  
                  <table width="23%">
                      <tr>
                          <td>
                                <h:outputLabel value="Data :"/>
                          </td>
                          <td>
                                <p:inputText size="11" maxlength="10" style="left: 0px" id="dataAula" value="#{GradeController.dataAula}" title="Informe a data da aula" onblur="validaDataFim(this)" onkeyup="mascaraData(this)" />
                          </td>
                      </tr>
                  </table>
                  <table width="300px">
                      <tr>
                          <td>
                                <h:outputLabel value="Hora Início :   " style="left:0px;"/>                                                         
                                <p:inputMask mask="99:99" size="5" id="horaIniAula" value="#{GradeController.horaIni}" title="Informe a hora Inicial da aula"  onblur="Verifica_Hora_Ini(this)"/>
                          </td>
                          <td>
                                <h:outputLabel value="Hora Fim :   " style="left:0px;"/>                                                         
                                <p:inputMask mask="99:99" size="5" id="horaFimAula" value="#{GradeController.horaFim}" title="Informe a hora final da aula"  onblur="Verifica_Hora_Fim(this)"/>
                          </td>
                      </tr>
                  </table>
                  
              </p:fieldset>
              
              <p:commandButton value="Salvar" update=":principal :tabela:aulas" actionListener="#{GradeController.preparaInclusaoAula()}"/>
              <p:commandButton value="Cancelar" process="@form" update="principal" actionListener="#{GradeController.resetGrade()}"/>                            
              
              <p:blockUI widgetVar="blockPrincipal" block="principal" >                               
                    <p:graphicImage value="./../img/ajax-loader.gif"/>                  
              </p:blockUI>               
              
          </h:form>
          <h:form id="tabela" prependId="false">
              
                <p:contextMenu for="aulas">                      
                     <p:menuitem value="Deletar" update=":principal :tabela" icon="ui-icon-close" onclick="confirmation.show()"/>  
                     <p:menuitem value="Editar"  update=":principal" icon="ui-icon-arrowrefresh-1-w" actionListener="#{GradeController.preparaEdicao()}"/>
                </p:contextMenu>                 
              
                <p:dataTable id="aulas" var="aula" emptyMessage="Não existe grade para essa unidade"                             
                             value="#{GradeController.lista}" rowKey="#{aula.id}"
                             selectionMode="single" selection="#{GradeController.gradeHorariaSelecionada}"
                             paginator="true" rows="50">
                    
                   <p:column filterMatchMode="contains" filterBy="#{aula.turma.nome}"> 
                        <f:facet name="header">  
                                <h:outputText value="Turma" />  
                        </f:facet>  
                            <h:outputText value="#{aula.turma.nome}"/>
                    </p:column>                     
                   
                    <p:column filterMatchMode="contains" filterBy="#{aula.disciplina.nome}"> 
                        <f:facet name="header">  
                                <h:outputText value="Disciplina" />  
                        </f:facet>  
                            <h:outputText value="#{aula.disciplina.nome}"/>
                    </p:column>                    
                    
                   <p:column filterMatchMode="contains" filterBy="#{aula.professor.nome}"> 
                        <f:facet name="header">  
                                <h:outputText value="Professor" />  
                        </f:facet>  
                            <h:outputText value="#{aula.professor.nome}"/>
                    </p:column>                             
                    
                    <p:column>   
                        <f:facet name="header">  
                                <h:outputText value="Data" />  
                        </f:facet>  
                            <h:outputText value="#{aula.data}">
                                <f:convertDateTime timeZone="America/Sao_Paulo" pattern="dd/MM/yyyy"/> 
                            </h:outputText>
                    </p:column>
                    
                    <p:column>   
                        <f:facet name="header">  
                                <h:outputText value="Sala" />  
                        </f:facet>  
                            <h:outputText value="#{aula.sala.nome}"/>                            
                    </p:column> 
                    
                    <p:column>
                        <f:facet name="header">
                                <h:outputText value="Material" />
                        </f:facet>  
                            <h:outputText value="#{aula.material}"/>
                    </p:column>                    

                    <p:column>   
                        <f:facet name="header">  
                                <h:outputText value="Inicio" />  
                        </f:facet>  
                            <h:outputText value="#{aula.horaIni}">
                                <f:convertDateTime timeZone="America/Sao_Paulo" pattern="HH:mm"/>
                            </h:outputText>
                    </p:column>    
                    
                    <p:column>   
                        <f:facet name="header">  
                                <h:outputText value="Fim" />  
                        </f:facet>  
                            <h:outputText value="#{aula.horaFim}">
                                <f:convertDateTime timeZone="America/Sao_Paulo" pattern="HH:mm"/>
                            </h:outputText>
                    </p:column>                     
                  
               </p:dataTable>                                                   
              
              <p:commandButton value="Deletar" id="deletarAula" update=":tabela:aulas :principal" onclick="confirmation.show()" />
              <p:commandButton value="Editar"  id="editarAula"  update=":principal" actionListener="#{GradeController.preparaEdicao()}"/>             
              
              <p:blockUI widgetVar="blockAulas" block="aulas" >                               
                    <p:graphicImage value="./../img/ajax-loader.gif"/>                  
              </p:blockUI>               
              
          </h:form>
            
        <!-- Abaixo temos o modal que irá controlar de qual unidade será apresentada a grade horária-->
        <p:dialog widgetVar="unidade" id="dialogUnidade" header="Unidades" closable="false" resizable="false" closeOnEscape="false">
       
            <h:form id="dlgUnidade" prependId="false">

                <p:panelGrid styleClass="usuarioGrid" columns="1">
                
                     <p:selectOneMenu style="width: 300px;" label="Unidade" id="selectUnidade" value="#{GradeController.selectedUnidades}"> 
                         <f:selectItems value="#{GradeController.carregarUnidadeDisponivel}" />                         
                     </p:selectOneMenu>                
                
                </p:panelGrid>    
                    
                <p:panelGrid columns="2" styleClass="usuarioGrid">
                    
                    <p:commandButton id="selecionaUnidade" value="Selecionar" update=":dialogUnidade :principal :tabela:aulas" actionListener="#{GradeController.existeGrade()}"/>
                    <p:button id="cancelar" value="Cancelar" onclick="unidade.hide()" outcome="home"/>
                                        
                </p:panelGrid>
                
            </h:form>
            
        </p:dialog>   
        
        <!-- Abaixo temos um modal de confirmação de exclusão repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
        <h:form id="dlg" prependId="false">
            <p:confirmDialog message="Deseja gerar Grade para a semana atual?" header="Aviso" severity="alert" widgetVar="geraGrade" >
                <!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
                <p:commandButton id="btnSim" value="Sim" onclick="geraGrade.hide();" update=":tabela" actionListener="#{GradeController.incluirSemanaAtual()}" />
                <!--caso seja não somente fecha o modal-->
                <p:commandButton id="btnNao" value="Não" onclick="geraGrade.hide();"/>
            </p:confirmDialog>                    
            
        </h:form>         
        
        <!-- Abaixo temos um modal de confirmação de exclusão repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
        <h:form id="dlgGeraGrade" prependId="false">
            <p:confirmDialog message="Deseja gerar Grade para a próxima semana?" header="Aviso" severity="alert" widgetVar="confirmationGeraGrade" >
                <!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
                <p:commandButton id="btnSimSemanaSeguinte" value="Sim" oncomplete="confirmationGeraGrade.hide();" actionListener="#{GradeController.incluirSemanaSeguinte()}" process="@form" update=":tabela:aulas :principal" />
                <!--caso seja não somente fecha o modal-->
                <p:commandButton id="btnNaoSemanaSeguinte" value="Não" onclick="confirmationGeraGrade.hide();" process="@form" update=":tabela:aulas :principal" />
            </p:confirmDialog>                    
            
        </h:form>  
        
        <!-- Abaixo temos um modal de confirmação de exclusão repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
        <h:form id="dlgConfirmation" prependId="false">
            <p:confirmDialog message="Deseja realmente excluir este registro?" header="Aviso" severity="alert" widgetVar="confirmation" modal="true">
                <!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
                <p:commandButton id="btnSimConfirmation" value="Sim" oncomplete="confirmation.hide();" actionListener="#{GradeController.deleteAula()}" process="@form" update=":principal :tabela" />
                <!--caso seja não somente fecha o modal-->
                <p:commandButton id="btnNaoConfirmation" value="Não" onclick="confirmation.hide();" type="button"/>
            </p:confirmDialog>
        </h:form>   
            
        </body>
        
        </ui:define>            
   
   </ui:composition>
        
</html>